package cn.edu.pku.houlei;

import javax.swing.text.html.HTML.Tag;
public class HtmlTag {
	
	enum TagType {
		TAG_A,
		TAG_ADDRESS,
		TAG_APPLET,
		TAG_AREA,
		TAG_B,
		TAG_BASE,
		TAG_BASEFONT,
		TAG_BIG,
		TAG_BLOCKQUOTE,
		TAG_BODY,
		TAG_BR,
		TAG_CAPTION,
		TAG_CENTER,
		TAG_CITE,
		TAG_CODE,
		TAG_DD,
		TAG_DFN,
		TAG_DIR,
		TAG_DIV,
		TAG_DL,
		TAG_DT,
		TAG_EM,
		TAG_FONT,
		TAG_FORM,
		TAG_FRAME,
		TAG_FRAMESET,
		TAG_H1,
		TAG_H2,
		TAG_H3,
		TAG_H4,
		TAG_H5,
		TAG_H6,
		TAG_HEAD,
		TAG_HR,
		TAG_HTML,
		TAG_I,
		TAG_IMG,
		TAG_INPUT,
		TAG_ISINDEX,
		TAG_KBD,
		TAG_LABEL,
		TAG_LI,
		TAG_LINK,
		TAG_MAP,
		TAG_MENU,
		TAG_META,
		TAG_NOBR,
		TAG_NOFRAMES,
		TAG_NOSCRIPT,
		TAG_OBJECT,
		TAG_OL,
		TAG_OPTION,
		TAG_P,
		TAG_PARAM,
		TAG_PRE,
		TAG_SAMP,
		TAG_SCRIPT,
		TAG_SELECT,
		TAG_SMALL,
		TAG_SPAN,
		TAG_STRIKE,
		TAG_S,
		TAG_STRONG,
		TAG_STYLE,
		TAG_SUB,
		TAG_SUP,
		TAG_TABLE,
		TAG_TD,
		TAG_TEXTAREA,
		TAG_TH,
		TAG_TITLE,
		TAG_TR,
		TAG_TT,
		TAG_U,
		TAG_UL,
		TAG_VAR,
		
		//#
		TAG_ROOT,
		TAG_PURTEXT,
		//TAG_ERR,
		TAG_REMARK,
		TAG_UNKNOWN
	};
	
	TagType tagType;
	String name;
	
	public HtmlTag(HtmlTag.TagType type)
	{
		tagType = type;
	}
	
	public HtmlTag(HtmlTag.TagType type, String name)
	{
		tagType = type;
		this.name = name;
	}
	
	public TagType getTagType()
	{
		return tagType;
	}
	
	public String getTagName()
	{
		return name;
	}
	
	public String getStartTagStr() {
		if (tagType != TagType.TAG_PURTEXT &&
			tagType != TagType.TAG_ROOT &&
			tagType != TagType.TAG_UNKNOWN &&
			tagType != TagType.TAG_REMARK)
		{
			return name.toUpperCase();
		} 
		
		if (tagType == TagType.TAG_REMARK) {
			return "!--";
		}
		
		return "";
	}
	
	public String getEndTagStr() {
		if (tagType != TagType.TAG_PURTEXT &&
			tagType != TagType.TAG_ROOT &&
			tagType != TagType.TAG_UNKNOWN &&
			tagType != TagType.TAG_REMARK)
		{
			return name.toUpperCase();
		} 
		
		if (tagType == TagType.TAG_REMARK) {
			return "--";
		}
		
		return "";
	}
}